Docker容器管理
Docker网络连接
单机Docker网络配置
-
linux虚拟网桥的特点:
- 可以设置IP地址
- 相当于拥有一个隐藏的虚拟网卡
-
docker0的地址自动划分
- 分配IP地址172.17.X.X
- 分配MAC地址
- 子网掩码255.255.0.0
- 每一个docker主机都对应一个docker容器网卡
-
自定义docker0地址
sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0
-
自定义虚拟网桥
-
添加虚拟网桥
sudo brctl addbr br0 sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0
-
更改docker守护进程的启动配置
sudo vim /etc/default/docker DOCKER_OPTS="-b=br0" sudo service docker restart
-
Docker容器互联
-
默认:允许所有容器间互联
-
--icc
sudo docker run -it --name cct1 ubuntu bash
默认--icc=true,但是IP地址会发生变化
-
--link
sudo docker run -it --name cct2 --link=cct1:webtest ubuntu bash
链接容器,不会因IP变化导致链接不到
-
-
拒绝所有容器间互联
sudo docker run -it --name cct3 --icc=false ubuntu bash
-
允许特定容器间互联
sudo docker run -it --name cct4 --icc=false --iptables=true --link=cct1:webtest ubuntu bash
Docker容器与外部网络连接
-
iptables配置
sudo iptables -I DOCKER -s 10.X.X.X -d 172.17.X.X -p TCP -dport 80 -j ACCEPT 或者 sudo iptables -I DOCKER -s 10.X.X.X -d 172.17.X.X -p TCP -dport 80 -j DROP
-
docker端口映射
sudo docker run -it --name cct5 -p 80 ubuntu bash apt-get update apt-get install -y nginx nginx ctrl+p sudo docker port cct5
Docker数据管理
数据卷
- 概念:经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问。
-
设计目的:
- 数据持久化
- 独立于容器生命周期
- 不存在回收机制
- 存在Docker宿主机中,可利用容器技术与宿主机共享数据,可以是目录或文件,同一个目录或文件支持多个容器访问,实现容器间数据共享与交换
-
特点
- 在容器启动时初始化
- 可以在容器间共享和重用
- 容器可以对数据卷中的内容直接修改
- 数据卷的变化不会影响镜像的更新
- 数据永久存在
-
挂载数据卷并添加访问权限,权限默认可读写
sudo docker run -it -v ~/datavolume:/data:权限 ubuntu bash
数据卷容器
- 概念:数据卷容器就是挂载了数据卷的容器,其他容器通过挂载这个容器实现数据共享
-
挂载数据卷容器并添加访问权限,权限默认可读写
sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash sudo docker run -it --volume-from dv1 --name dv2 ubuntu bash
- 数据卷容器仅仅作为数据传递,即使删除,数据仍然存在
-
备份
sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash sudo docker run -it --volume-from dv1 -v ~/backup:/backup --name dv2 ubuntu tar cvf /backup/dv1.tar /data
-
还原
sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash sudo docker run -it --volume-from dv1 -v ~/backup:/backup --name dv2 ubuntu tar zxvf /backup/dv1.tar /data
Docker跨主机连接
网桥配置
-
主机配置
sudo vim /etc/network/interfaces auto br0 iface br0 inetstatic address 10.211.55.3 netmask 255.255.255.0 gateway 10.211.55.1 bridge_ports eth0
-
Docker容器配置
sudo vim /etc/default/docker DOCKER_OPTS="-b=br0 --fixed-cidr='10.211.55.128/20'"
Open vSwitch配置
- 建立ovs网桥
- 添加GRE(通用路由协议封装)连接
- 配置Docker容器虚拟网桥
- 为虚拟网桥添加ovs接口
- 添加不同Docker容器网段路由
sudo ovs-vsctl add-br obr0
sudo ovs-vsctl add-port obr0 gre0
sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.1.100
sudo ovs-vsctl show
sudo brctl addbr br0
sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
sudo brctl addif br0 obr0
sudo brctl show
sudo vim /etc/default/docker
DOCKER_OPTS="-b=br0"
sudo ip route add 192.168.2.0/24 via 192.168.1.100 dev eth0
route
weave配置
- 安装
-
启动
weave launch
- 连接不同主机
-
通过weave启动容器
weave run 192.168.1.2/24 -it --name wv1 ubuntu bash
总结
通过极客学院中Docker容器的学习,对Docker容器有了一个初步的认识,以后会逐步深入,容器化技术会越来越好。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。